﻿/**
 * @file   FITKOFEnum.hpp
 * @brief FITKOF枚举文件
 * @author liuzhonghua (liuzhonghuaszch@163.com)
 * @date 2024-06-13
 */
#ifndef _FITKOFENUM_HPP__
#define _FITKOFENUM_HPP__

#include "FITKInterfaceFlowOFAPI.h"
#include <QObject>
//TODO: solver option on GUI
namespace Interface
{
    class FITKInterfaceFlowOFAPI FITKOFSolverTypeEnum : public QObject
    {
        Q_OBJECT
    public:
        /**
         * @brief 求解器过滤类型
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date 2024-06-12
         */
        enum FITKOFSolverFiltersType
        {
            NoneFiltersType,
            SteadyState,
            Transient,
            Incompressible,
            Compressible,
            Turbulences,
            MRF,
            SRF,
            Radiation,
            Porosity,
            Multiphase,
            Lagrangian,
            Spcies,
            HeatTransfer,
            DynamicMesh,
            Buoyancy,
            Acoustic,
            HyperMesh,
            UserDefined,
        };
        Q_ENUM(FITKOFSolverFiltersType);
        /**
         * @brief 求解器类型
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date 2024-06-12
         */
        enum FITKOFSolverType
        {
            SolverNone,
            SIMPLE,
            INTER,
        };
        /**
         * @brief  湍流模式
         * @author liuzhonghua (liuzhonghuaszch@163.com)
         * @date   2024-08-13
         */
        enum FITKOFTurbulenceType
        {
            TurbNone,
            RANS,
            LES,
        };
        Q_ENUM(FITKOFTurbulenceType);
        enum FITKOFBoundaryType
        {
            BNone,
            BWall,
            BPressureInlet,
            BVelocityInlet,
            BPressureOutlet,
            BOutflow,
            BSymmetry,
            BWaveTransmissive,
            BWedge,
            BEmpty,
        };

        
    private:
        explicit FITKOFSolverTypeEnum() = default;
        ~FITKOFSolverTypeEnum() = default;
    };

    /**
     * @brief FITKOF SolverInitial枚举
     * @author liuzhonghua (liuzhonghuaszch@163.com)
     * @date 2024-06-12
     */
    class FITKInterfaceFlowOFAPI FITKOFSolverInitialEnum : public QObject
    {
        Q_OBJECT
    public:

        enum FITKPatchApplyObjectType
        {
            Cells,
            Faces,
            Both,
        };
        Q_ENUM(FITKPatchApplyObjectType);

    private:
        explicit FITKOFSolverInitialEnum() = default;
        ~FITKOFSolverInitialEnum() = default;
    };
}


#endif
